package com.nowcoder;

import java.util.Scanner;

public class Chorus {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; i++) {
                arr[i] = scanner.nextInt();
            }
            System.out.println(solver(arr));
        }
    }

    /**
     * 1.求出每个位置i的最长左侧上升子序列numL[i]，即i左侧所有位置中最长左侧上升子序列的长度+1；
     * 2.求出每个位置i的最长右侧下降子序列numR[i]，即i右侧所有位置中最长右侧下降子序列的长度+1；
     * 3.计算每个位置的最长序列长度 = 最长左侧上升子序列+最长右侧下降子序列-1（算过两次）
     *
     * @param arr
     * @return
     */
    public static int solver(int[] arr) {
        int res = 0;
        int len = arr.length;
        int[] numL = new int[len];
        int[] numR = new int[len];
        for (int i = 0; i < len; i++) {
            for (int j = 0; j < i; j++) {
                if (arr[i] > arr[j]) {
                    numL[i] = Math.max(numL[i], numL[j]);
                }
            }
            numL[i] += 1;
        }
        for (int i = len - 1; i >= 0; i--) {
            for (int j = len - 1; j > i; j--) {
                if (arr[i] > arr[j]) {
                    numR[i] = Math.max(numR[i], numR[j]);
                }
            }
            numR[i] += 1;
        }
        for (int i = 0; i < len; i++) {
            res = Math.max(res, numL[i] + numR[i] - 1);
        }

        return len - res;
    }
}
